
#ifndef __LIBERTY_LIBRARY_IASSET_H__
#define __LIBERTY_LIBRARY_IASSET_H__

#include <Liberty3D/Liberty3D.h>
#include <Liberty3D/Engine/ISerializable.h>

namespace Liberty { namespace Library {
    class IAsset : public Liberty::Engine::ISerializable {
    public:
        virtual ~IAsset() {}

    public:
        virtual std::shared_ptr<IAssetDepot> assetDepot()  const = 0;
        virtual ObjectStatus                 assetStatus() const = 0;

        virtual Liberty::Engine::Uuid assetUuid() const = 0;

        virtual std::string assetPath() const = 0;
        virtual std::string assetPath(const Liberty::Engine::Uuid&) const = 0;
        virtual std::string assetRelative(const std::string&, Liberty::Engine::Uuid* uuid = nullptr) const = 0;
    };
}}

#endif
